const app = getApp()

import { houseSourceType, imagePath } from '../../common/static/api_data'
import { img } from "../../utils/http"
import { upload_api } from "../../common/api/api"
const behavior = require('../relation_behavior')
import { HiddenCall } from '../../request/api.js'
import { throttle } from '../../utils/throttle.js'
const request = new HiddenCall
Component({
  /**
   * 房源图片上传
   * - @author           王磊
   * isImage               打开图片类型
   * showImgType     上传图片类型弹窗
   * code                   房客源编号
   * pickImageType   上传图片类型
   * houseSourceType 上传图片类型字典
   * imgModel            图片数据model
   * ispush                  是否推送易遨
   */
  behaviors: [behavior],
  properties: {
    isImage: Boolean,
    showImgType: Boolean,
    code: String,
    imgModel: Array
  },
  data: {
    pickImageType: [], 
    houseSourceType,
    ispush: false
  },
  methods: {
    /**
     * 选择图片上传类型
     * author  wl
     * pickImageType       要上传图片类型model
     * data                        上传类型字典
     */
    forImageType(data) {
      // 上传图片类型model小于图片类型字典
      if (this.data.pickImageType.length < data.length) {
        // 循环添加上传类型
        for (let i = 0; i < data.length; i++) {
          this.data.pickImageType.push(data[i].value)
        }
        // 数据更新
        this.setData({
          pickImageType: this.data.pickImageType
        })
      }
    },
    /**
     * 修改图片上传类型
     * author  wl
     */
    bindPickerChange(e) {
      // 获取修改类型值
      this.data.imageType.value = this.data.pickImageType[e.detail.value]
      // 获取修改的类型code
      this.data.imageType.code = this.data.houseSourceType[e.detail.value].code
      // 数据更新
      this.setData({
        imageType: this.data.imageType
      })
    },
    /**
     * 是否推送erp
     * author  wl
     */
    checkboxChange(e) {
      // 选中的数组大于0则为推送
      this.setData({
        ispush: e.detail.value.length > 0 ? true : false
      })
    },
    /**
     * 上传图片选择类型
     * author dzl
     */
    typeChange: function (data) {
      // 调用choose_label组件事件
      // 获取选中的图片上传类型
      this.setData({
        houseSourceType: data.detail.model,
        imageType: data.detail
      })
      // 将上传的图片类型放入数据model
      this.forImageType(this.data.houseSourceType)
    },
    /**
     * 上传图片云存储，拼接地址，整理数据
     * author dzl
     */
    uploadImage: function () {
      // 调用图片函数
      img().then(res => {
        wx.showLoading({
          icon: 'loading'
        })
        // 获取图片地址
        let list = res.tempFilePaths.map(item => {
          // 将图片地址进行上传
          return request.uploadImage(item).then(res => {
            // 正则替换
            let reg = /^(wxfile\:\/\/|http\:\/\/tmp\/)/ig
            let img_name = item.replace(reg, "")
            // 拼接图片地址上传阿里云
            return `${upload_api[0].url}/houseHiddenCall/${img_name}`
          })
        })
        // 将图片数组循环
        Promise.all(list).then(res => {
          for (let i = 0; i < res.length; i++) {
            // 放入上传图片model
            this.data.imgModel.push(res[i])
          }
          // 关闭上传类型弹窗，数据更新
          this.setData({
            showImgType: false,
            imgModel: this.data.imgModel
          })
          wx.hideLoading()
        })
      })
    },
    /**
     * 删除要上传图片
     * author  wl
     */
    delImage(e) {
      // 获取删除图片的索引
      let index = e.currentTarget.dataset.index
      // 进行删除
      this.data.imgModel.splice(index, 1)
      // 数据更新
      this.setData({
        imgModel: this.data.imgModel
      })
    },
    /**
     * 上传图片提交数据
     * author dzl
     */
    addDetailImage: throttle(function () {
      // 友好提示
      if (!this.data.imageType) {
        wx.showToast({ title: '请选择类型！', icon: 'none' })
        return
      } 
      // 上传图片数据汇集
      let model = {}
      // 图片类型code
      model.imageType = this.data.imageType.code
      // 房客编号
      model.resourceCode = this.data.code
      // 是否推送易遨
      model.isPush = this.data.ispush
      // 图片地址
      model.urls = this.data.imgModel
      // 媒体类型
      model.utype = '1001'
      // 图片数组有值进行接口调用
      this.data.imgModel.length > 0 ?
        request.addMedia(model).then(res => {
          // 将推送易遨重置，图片model重置
          this.setData({
            isImage: false,
            ispush: false,
            imgModel: []
          })
          // 关闭图片上传
          this.clickMask()
          // 没有选择图片上传友好提示
        }) : wx.showToast({ title: '请选择图片！', icon: 'none' })
    }, 2000),
    /**
     * 关闭弹窗
     */
    clickMask() {
      this.triggerEvent('clickMask')
    }
  }
})